+++ /dev/null
-/* GTK - The GIMP Toolkit
- * Copyright (C) 2010 Carlos Garnacho <carlosg@gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "config.h"
-
-#include <math.h>
-#include <gtk/gtk.h>
-
-#include <gtk/gtkstylecontext.h>
-#include <gtk/gtkintl.h>
-
-#include "gtkprivate.h"
-#include "gtkmodulesprivate.h"
-#include "gtkpango.h"
-#include "gtkrenderprivate.h"
-#include "gtkstylecontextprivate.h"
-
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-
-/**
- * SECTION:gtkthemingengine
- * @Short_description: Theming renderers
- * @Title: GtkThemingEngine
- * @See_also: #GtkStyleContext
- *
- * #GtkThemingEngine was the object used for rendering themed content
- * in GTK+ widgets. It used to allow overriding GTK+'s default
- * implementation of rendering functions by allowing engines to be
- * loaded as modules.
- *
- * #GtkThemingEngine has been deprecated in GTK+ 3.14 and will be
- * ignored for rendering. The advancements in CSS theming are good
- * enough to allow themers to achieve their goals without the need
- * to modify source code.
- */
-
-enum {
- PROP_0,
- PROP_NAME
-};
-
-struct GtkThemingEnginePrivate
-{
- GtkStyleContext *context;
- gchar *name;
-};
-
-static void gtk_theming_engine_finalize (GObject *object);
-static void gtk_theming_engine_impl_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gtk_theming_engine_impl_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-
-static void gtk_theming_engine_render_check (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height);
-static void gtk_theming_engine_render_option (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height);
-static void gtk_theming_engine_render_arrow (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble angle,
- gdouble x,
- gdouble y,
- gdouble size);
-static void gtk_theming_engine_render_background (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height);
-static void gtk_theming_engine_render_frame (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height);
-static void gtk_theming_engine_render_expander (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height);
-static void gtk_theming_engine_render_focus (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height);
-static void gtk_theming_engine_render_layout (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- PangoLayout *layout);
-static void gtk_theming_engine_render_line (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x0,
- gdouble y0,
- gdouble x1,
- gdouble y1);
-static void gtk_theming_engine_render_slider (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- GtkOrientation orientation);
-static void gtk_theming_engine_render_frame_gap (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- GtkPositionType gap_side,
- gdouble xy0_gap,
- gdouble xy1_gap);
-static void gtk_theming_engine_render_extension (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- GtkPositionType gap_side);
-static void gtk_theming_engine_render_handle (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height);
-static void gtk_theming_engine_render_activity (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height);
-static GdkPixbuf * gtk_theming_engine_render_icon_pixbuf (GtkThemingEngine *engine,
- const GtkIconSource *source,
- GtkIconSize size);
-static void gtk_theming_engine_render_icon (GtkThemingEngine *engine,
- cairo_t *cr,
- GdkPixbuf *pixbuf,
- gdouble x,
- gdouble y);
-static void gtk_theming_engine_render_icon_surface (GtkThemingEngine *engine,
- cairo_t *cr,
- cairo_surface_t *surface,
- gdouble x,
- gdouble y);
-
-G_DEFINE_TYPE_WITH_PRIVATE (GtkThemingEngine, gtk_theming_engine, G_TYPE_OBJECT)
-
-typedef struct GtkThemingModule GtkThemingModule;
-typedef struct GtkThemingModuleClass GtkThemingModuleClass;
-
-struct GtkThemingModule
-{
- GTypeModule parent_instance;
- GModule *module;
- gchar *name;
-
- void (*init) (GTypeModule *module);
- void (*exit) (void);
- GtkThemingEngine * (*create_engine) (void);
-};
-
-struct GtkThemingModuleClass
-{
- GTypeModuleClass parent_class;
-};
-
-#define GTK_TYPE_THEMING_MODULE (gtk_theming_module_get_type ())
-#define GTK_THEMING_MODULE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GTK_TYPE_THEMING_MODULE, GtkThemingModule))
-#define GTK_IS_THEMING_MODULE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GTK_TYPE_THEMING_MODULE))
-
-_GDK_EXTERN
-GType gtk_theming_module_get_type (void);
-
-G_DEFINE_TYPE (GtkThemingModule, gtk_theming_module, G_TYPE_TYPE_MODULE);
-
-static void
-gtk_theming_engine_class_init (GtkThemingEngineClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->finalize = gtk_theming_engine_finalize;
- object_class->set_property = gtk_theming_engine_impl_set_property;
- object_class->get_property = gtk_theming_engine_impl_get_property;
-
- klass->render_icon = gtk_theming_engine_render_icon;
- klass->render_check = gtk_theming_engine_render_check;
- klass->render_option = gtk_theming_engine_render_option;
- klass->render_arrow = gtk_theming_engine_render_arrow;
- klass->render_background = gtk_theming_engine_render_background;
- klass->render_frame = gtk_theming_engine_render_frame;
- klass->render_expander = gtk_theming_engine_render_expander;
- klass->render_focus = gtk_theming_engine_render_focus;
- klass->render_layout = gtk_theming_engine_render_layout;
- klass->render_line = gtk_theming_engine_render_line;
- klass->render_slider = gtk_theming_engine_render_slider;
- klass->render_frame_gap = gtk_theming_engine_render_frame_gap;
- klass->render_extension = gtk_theming_engine_render_extension;
- klass->render_handle = gtk_theming_engine_render_handle;
- klass->render_activity = gtk_theming_engine_render_activity;
- klass->render_icon_pixbuf = gtk_theming_engine_render_icon_pixbuf;
- klass->render_icon_surface = gtk_theming_engine_render_icon_surface;
-
- /**
- * GtkThemingEngine:name:
- *
- * The theming engine name, this name will be used when registering
- * custom properties, for a theming engine named "Clearlooks" registering
- * a "glossy" custom property, it could be referenced in the CSS file as
- *
- * |[
- * -Clearlooks-glossy: true;
- * ]|
- *
- * Since: 3.0
- */
- g_object_class_install_property (object_class,
- PROP_NAME,
- g_param_spec_string ("name",
- P_("Name"),
- P_("Theming engine name"),
- NULL,
- G_PARAM_CONSTRUCT_ONLY | GTK_PARAM_READWRITE));
-}
-
-static void
-gtk_theming_engine_init (GtkThemingEngine *engine)
-{
- engine->priv = gtk_theming_engine_get_instance_private (engine);
-}
-
-static void
-gtk_theming_engine_finalize (GObject *object)
-{
- GtkThemingEnginePrivate *priv;
-
- priv = GTK_THEMING_ENGINE (object)->priv;
- g_free (priv->name);
-
- G_OBJECT_CLASS (gtk_theming_engine_parent_class)->finalize (object);
-}
-
-static void
-gtk_theming_engine_impl_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GtkThemingEnginePrivate *priv;
-
- priv = GTK_THEMING_ENGINE (object)->priv;
-
- switch (prop_id)
- {
- case PROP_NAME:
- g_free (priv->name);
-
- priv->name = g_value_dup_string (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gtk_theming_engine_impl_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GtkThemingEnginePrivate *priv;
-
- priv = GTK_THEMING_ENGINE (object)->priv;
-
- switch (prop_id)
- {
- case PROP_NAME:
- g_value_set_string (value, priv->name);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-/**
- * gtk_theming_engine_get_property:
- * @engine: a #GtkThemingEngine
- * @property: the property name
- * @state: state to retrieve the value for
- * @value: (out) (transfer full): return location for the property value,
- * you must free this memory using g_value_unset() once you are
- * done with it.
- *
- * Gets a property value as retrieved from the style settings that apply
- * to the currently rendered element.
- *
- * Since: 3.0
- *
- * Deprecated: 3.14
- **/
-void
-gtk_theming_engine_get_property (GtkThemingEngine *engine,
- const gchar *property,
- GtkStateFlags state,
- GValue *value)
-{
- GtkThemingEnginePrivate *priv;
-
- g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
- g_return_if_fail (property != NULL);
- g_return_if_fail (value != NULL);
-
- priv = engine->priv;
- gtk_style_context_get_property (priv->context, property, state, value);
-}
-
-/**
- * gtk_theming_engine_get_valist:
- * @engine: a #GtkThemingEngine
- * @state: state to retrieve values for
- * @args: va_list of property name/return location pairs, followed by %NULL
- *
- * Retrieves several style property values that apply to the currently
- * rendered element.
- *
- * Since: 3.0
- *
- * Deprecated: 3.14
- **/
-void
-gtk_theming_engine_get_valist (GtkThemingEngine *engine,
- GtkStateFlags state,
- va_list args)
-{
- GtkThemingEnginePrivate *priv;
-
- g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
-
- priv = engine->priv;
- gtk_style_context_get_valist (priv->context, state, args);
-}
-
-/**
- * gtk_theming_engine_get:
- * @engine: a #GtkThemingEngine
- * @state: state to retrieve values for
- * @...: property name /return value pairs, followed by %NULL
- *
- * Retrieves several style property values that apply to the currently
- * rendered element.
- *
- * Since: 3.0
- *
- * Deprecated: 3.14
- **/
-void
-gtk_theming_engine_get (GtkThemingEngine *engine,
- GtkStateFlags state,
- ...)
-{
- GtkThemingEnginePrivate *priv;
- va_list args;
-
- g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
-
- priv = engine->priv;
-
- va_start (args, state);
- gtk_style_context_get_valist (priv->context, state, args);
- va_end (args);
-}
-
-/**
- * gtk_theming_engine_get_style_property:
- * @engine: a #GtkThemingEngine
- * @property_name: the name of the widget style property
- * @value: (out): Return location for the property value, free with
- * g_value_unset() after use.
- *
- * Gets the value for a widget style property.
- *
- * Since: 3.0
- *
- * Deprecated: 3.14
- **/
-void
-gtk_theming_engine_get_style_property (GtkThemingEngine *engine,
- const gchar *property_name,
- GValue *value)
-{
- GtkThemingEnginePrivate *priv;
-
- g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
- g_return_if_fail (property_name != NULL);
-
- priv = engine->priv;
- gtk_style_context_get_style_property (priv->context, property_name, value);
-}
-
-/**
- * gtk_theming_engine_get_style_valist:
- * @engine: a #GtkThemingEngine
- * @args: va_list of property name/return location pairs, followed by %NULL
- *
- * Retrieves several widget style properties from @engine according to the
- * currently rendered content’s style.
- *
- * Since: 3.0
- *
- * Deprecated: 3.14
- **/
-void
-gtk_theming_engine_get_style_valist (GtkThemingEngine *engine,
- va_list args)
-{
- GtkThemingEnginePrivate *priv;
-
- g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
-
- priv = engine->priv;
- gtk_style_context_get_style_valist (priv->context, args);
-}
-
-/**
- * gtk_theming_engine_get_style:
- * @engine: a #GtkThemingEngine
- * @...: property name /return value pairs, followed by %NULL
- *
- * Retrieves several widget style properties from @engine according
- * to the currently rendered content’s style.
- *
- * Since: 3.0
- *
- * Deprecated: 3.14
- **/
-void
-gtk_theming_engine_get_style (GtkThemingEngine *engine,
- ...)
-{
- GtkThemingEnginePrivate *priv;
- va_list args;
-
- g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
-
- priv = engine->priv;
-
- va_start (args, engine);
- gtk_style_context_get_style_valist (priv->context, args);
- va_end (args);
-}
-
-/**
- * gtk_theming_engine_lookup_color:
- * @engine: a #GtkThemingEngine
- * @color_name: color name to lookup
- * @color: (out): Return location for the looked up color
- *
- * Looks up and resolves a color name in the current style’s color map.
- *
- * Returns: %TRUE if @color_name was found and resolved, %FALSE otherwise
- *
- * Since: 3.0
- *
- * Deprecated: 3.14
- **/
-gboolean
-gtk_theming_engine_lookup_color (GtkThemingEngine *engine,
- const gchar *color_name,
- GdkRGBA *color)
-{
- GtkThemingEnginePrivate *priv;
-
- g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), FALSE);
- g_return_val_if_fail (color_name != NULL, FALSE);
-
- priv = engine->priv;
- return gtk_style_context_lookup_color (priv->context, color_name, color);
-}
-
-/**
- * gtk_theming_engine_get_state:
- * @engine: a #GtkThemingEngine
- *
- * returns the state used when rendering.
- *
- * Returns: the state flags
- *
- * Since: 3.0
- *
- * Deprecated: 3.14
- **/
-GtkStateFlags
-gtk_theming_engine_get_state (GtkThemingEngine *engine)
-{
- GtkThemingEnginePrivate *priv;
-
- g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), 0);
-
- priv = engine->priv;
- return gtk_style_context_get_state (priv->context);
-}
-
-/**
- * gtk_theming_engine_state_is_running:
- * @engine: a #GtkThemingEngine
- * @state: a widget state
- * @progress: (out): return location for the transition progress
- *
- * Returns %TRUE if there is a transition animation running for the
- * current region (see gtk_style_context_push_animatable_region()).
- *
- * If @progress is not %NULL, the animation progress will be returned
- * there, 0.0 means the state is closest to being %FALSE, while 1.0 means
- * it’s closest to being %TRUE. This means transition animations will
- * run from 0 to 1 when @state is being set to %TRUE and from 1 to 0 when
- * it’s being set to %FALSE.
- *
- * Returns: %TRUE if there is a running transition animation for @state.
- *
- * Since: 3.0
- *
- * Deprecated: 3.6: Always returns %FALSE
- **/
-gboolean
-gtk_theming_engine_state_is_running (GtkThemingEngine *engine,
- GtkStateType state,
- gdouble *progress)
-{
- g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), FALSE);
-
- return FALSE;
-}
-
-/**
- * gtk_theming_engine_get_path:
- * @engine: a #GtkThemingEngine
- *
- * Returns the widget path used for style matching.
- *
- * Returns: (transfer none): A #GtkWidgetPath
- *
- * Since: 3.0
- *
- * Deprecated: 3.14
- **/
-const GtkWidgetPath *
-gtk_theming_engine_get_path (GtkThemingEngine *engine)
-{
- GtkThemingEnginePrivate *priv;
-
- g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), NULL);
-
- priv = engine->priv;
- return gtk_style_context_get_path (priv->context);
-}
-
-/**
- * gtk_theming_engine_has_class:
- * @engine: a #GtkThemingEngine
- * @style_class: class name to look up
- *
- * Returns %TRUE if the currently rendered contents have
- * defined the given class name.
- *
- * Returns: %TRUE if @engine has @class_name defined
- *
- * Since: 3.0
- *
- * Deprecated: 3.14
- **/
-gboolean
-gtk_theming_engine_has_class (GtkThemingEngine *engine,
- const gchar *style_class)
-{
- GtkThemingEnginePrivate *priv;
-
- g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), FALSE);
-
- priv = engine->priv;
- return gtk_style_context_has_class (priv->context, style_class);
-}
-
-/**
- * gtk_theming_engine_has_region:
- * @engine: a #GtkThemingEngine
- * @style_region: a region name
- * @flags: (out) (allow-none): return location for region flags
- *
- * Returns %TRUE if the currently rendered contents have the
- * region defined. If @flags_return is not %NULL, it is set
- * to the flags affecting the region.
- *
- * Returns: %TRUE if region is defined
- *
- * Since: 3.0
- *
- * Deprecated: 3.14
- **/
-gboolean
-gtk_theming_engine_has_region (GtkThemingEngine *engine,
- const gchar *style_region,
- GtkRegionFlags *flags)
-{
- GtkThemingEnginePrivate *priv;
-
- if (flags)
- *flags = 0;
-
- g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), FALSE);
-
- priv = engine->priv;
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
- return gtk_style_context_has_region (priv->context, style_region, flags);
-G_GNUC_END_IGNORE_DEPRECATIONS
-}
-
-/**
- * gtk_theming_engine_get_direction:
- * @engine: a #GtkThemingEngine
- *
- * Returns the widget direction used for rendering.
- *
- * Returns: the widget direction
- *
- * Since: 3.0
- *
- * Deprecated: 3.8: Use gtk_theming_engine_get_state() and
- * check for #GTK_STATE_FLAG_DIR_LTR and
- * #GTK_STATE_FLAG_DIR_RTL instead.
- **/
-GtkTextDirection
-gtk_theming_engine_get_direction (GtkThemingEngine *engine)
-{
- GtkThemingEnginePrivate *priv;
-
- g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), GTK_TEXT_DIR_LTR);
-
- priv = engine->priv;
- G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
- return gtk_style_context_get_direction (priv->context);
- G_GNUC_END_IGNORE_DEPRECATIONS;
-}
-
-/**
- * gtk_theming_engine_get_junction_sides:
- * @engine: a #GtkThemingEngine
- *
- * Returns the widget direction used for rendering.
- *
- * Returns: the widget direction
- *
- * Since: 3.0
- *
- * Deprecated: 3.14
- **/
-GtkJunctionSides
-gtk_theming_engine_get_junction_sides (GtkThemingEngine *engine)
-{
- GtkThemingEnginePrivate *priv;
-
- g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), 0);
-
- priv = engine->priv;
- return gtk_style_context_get_junction_sides (priv->context);
-}
-
-/**
- * gtk_theming_engine_get_color:
- * @engine: a #GtkThemingEngine
- * @state: state to retrieve the color for
- * @color: (out): return value for the foreground color
- *
- * Gets the foreground color for a given state.
- *
- * Since: 3.0
- *
- * Deprecated: 3.14
- **/
-void
-gtk_theming_engine_get_color (GtkThemingEngine *engine,
- GtkStateFlags state,
- GdkRGBA *color)
-{
- GtkThemingEnginePrivate *priv;
-
- g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
-
- priv = engine->priv;
- gtk_style_context_get_color (priv->context, state, color);
-}
-
-/**
- * gtk_theming_engine_get_background_color:
- * @engine: a #GtkThemingEngine
- * @state: state to retrieve the color for
- * @color: (out): return value for the background color
- *
- * Gets the background color for a given state.
- *
- * Since: 3.0
- *
- * Deprecated: 3.14
- **/
-void
-gtk_theming_engine_get_background_color (GtkThemingEngine *engine,
- GtkStateFlags state,
- GdkRGBA *color)
-{
- GtkThemingEnginePrivate *priv;
-
- g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
-
- priv = engine->priv;
- gtk_style_context_get_background_color (priv->context, state, color);
-}
-
-/**
- * gtk_theming_engine_get_border_color:
- * @engine: a #GtkThemingEngine
- * @state: state to retrieve the color for
- * @color: (out): return value for the border color
- *
- * Gets the border color for a given state.
- *
- * Since: 3.0
- *
- * Deprecated: 3.14
- **/
-void
-gtk_theming_engine_get_border_color (GtkThemingEngine *engine,
- GtkStateFlags state,
- GdkRGBA *color)
-{
- GtkThemingEnginePrivate *priv;
-
- g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
-
- priv = engine->priv;
- gtk_style_context_get_border_color (priv->context, state, color);
-}
-
-/**
- * gtk_theming_engine_get_border:
- * @engine: a #GtkThemingEngine
- * @state: state to retrieve the border for
- * @border: (out): return value for the border settings
- *
- * Gets the border for a given state as a #GtkBorder.
- *
- * Since: 3.0
- *
- * Deprecated: 3.14
- **/
-void
-gtk_theming_engine_get_border (GtkThemingEngine *engine,
- GtkStateFlags state,
- GtkBorder *border)
-{
- GtkThemingEnginePrivate *priv;
-
- g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
-
- priv = engine->priv;
- gtk_style_context_get_border (priv->context, state, border);
-}
-
-/**
- * gtk_theming_engine_get_padding:
- * @engine: a #GtkThemingEngine
- * @state: state to retrieve the padding for
- * @padding: (out): return value for the padding settings
- *
- * Gets the padding for a given state as a #GtkBorder.
- *
- * Since: 3.0
- *
- * Deprecated: 3.14
- **/
-void
-gtk_theming_engine_get_padding (GtkThemingEngine *engine,
- GtkStateFlags state,
- GtkBorder *padding)
-{
- GtkThemingEnginePrivate *priv;
-
- g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
-
- priv = engine->priv;
- gtk_style_context_get_padding (priv->context, state, padding);
-}
-
-/**
- * gtk_theming_engine_get_margin:
- * @engine: a #GtkThemingEngine
- * @state: state to retrieve the border for
- * @margin: (out): return value for the margin settings
- *
- * Gets the margin for a given state as a #GtkBorder.
- *
- * Since: 3.0
- *
- * Deprecated: 3.14
- **/
-void
-gtk_theming_engine_get_margin (GtkThemingEngine *engine,
- GtkStateFlags state,
- GtkBorder *margin)
-{
- GtkThemingEnginePrivate *priv;
-
- g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
-
- priv = engine->priv;
- gtk_style_context_get_margin (priv->context, state, margin);
-}
-
-/**
- * gtk_theming_engine_get_font:
- * @engine: a #GtkThemingEngine
- * @state: state to retrieve the font for
- *
- * Returns the font description for a given state.
- *
- * Returns: (transfer none): the #PangoFontDescription for the given
- * state. This object is owned by GTK+ and should not be
- * freed.
- *
- * Since: 3.0
- *
- * Deprecated: 3.8: Use gtk_theming_engine_get()
- **/
-const PangoFontDescription *
-gtk_theming_engine_get_font (GtkThemingEngine *engine,
- GtkStateFlags state)
-{
- GtkThemingEnginePrivate *priv;
-
- g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), NULL);
-
- G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
- priv = engine->priv;
- return gtk_style_context_get_font (priv->context, state);
- G_GNUC_END_IGNORE_DEPRECATIONS;
-}
-
-/* GtkThemingModule */
-
-static gboolean
-gtk_theming_module_load (GTypeModule *type_module)
-{
- GtkThemingModule *theming_module;
- GModule *module;
- gchar *name, *module_path;
-
- theming_module = GTK_THEMING_MODULE (type_module);
- name = theming_module->name;
- module_path = _gtk_find_module (name, "theming-engines");
-
- if (!module_path)
- return FALSE;
-
- module = g_module_open (module_path, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
- g_free (module_path);
-
- if (!module)
- return FALSE;
-
- if (!g_module_symbol (module, "theme_init",
- (gpointer *) &theming_module->init) ||
- !g_module_symbol (module, "theme_exit",
- (gpointer *) &theming_module->exit) ||
- !g_module_symbol (module, "create_engine",
- (gpointer *) &theming_module->create_engine))
- {
- g_module_close (module);
-
- return FALSE;
- }
-
- theming_module->module = module;
-
- theming_module->init (G_TYPE_MODULE (theming_module));
-
- return TRUE;
-}
-
-static void
-gtk_theming_module_unload (GTypeModule *type_module)
-{
- GtkThemingModule *theming_module;
-
- theming_module = GTK_THEMING_MODULE (type_module);
-
- theming_module->exit ();
-
- g_module_close (theming_module->module);
-
- theming_module->module = NULL;
- theming_module->init = NULL;
- theming_module->exit = NULL;
- theming_module->create_engine = NULL;
-}
-
-static void
-gtk_theming_module_class_init (GtkThemingModuleClass *klass)
-{
- GTypeModuleClass *module_class = G_TYPE_MODULE_CLASS (klass);
-
- module_class->load = gtk_theming_module_load;
- module_class->unload = gtk_theming_module_unload;
-}
-
-static void
-gtk_theming_module_init (GtkThemingModule *module)
-{
-}
-
-/**
- * gtk_theming_engine_load:
- * @name: Theme engine name to load
- *
- * Loads and initializes a theming engine module from the
- * standard directories.
- *
- * Returns: (nullable) (transfer none): A theming engine, or %NULL if
- * the engine @name doesn’t exist.
- *
- * Deprecated: 3.14
- **/
-GtkThemingEngine *
-gtk_theming_engine_load (const gchar *name)
-{
- static GHashTable *engines = NULL;
- static GtkThemingEngine *default_engine;
- GtkThemingEngine *engine = NULL;
-
- if (name)
- {
- if (!engines)
- engines = g_hash_table_new (g_str_hash, g_str_equal);
-
- engine = g_hash_table_lookup (engines, name);
-
- if (!engine)
- {
- GtkThemingModule *module;
-
- module = g_object_new (GTK_TYPE_THEMING_MODULE, NULL);
- g_type_module_set_name (G_TYPE_MODULE (module), name);
- module->name = g_strdup (name);
-
- if (module && g_type_module_use (G_TYPE_MODULE (module)))
- {
- engine = (module->create_engine) ();
-
- if (engine)
- g_hash_table_insert (engines, module->name, engine);
- }
- }
- }
- else
- {
- if (G_UNLIKELY (!default_engine))
- default_engine = g_object_new (GTK_TYPE_THEMING_ENGINE, NULL);
-
- engine = default_engine;
- }
-
- return engine;
-}
-
-/**
- * gtk_theming_engine_get_screen:
- * @engine: a #GtkThemingEngine
- *
- * Returns the #GdkScreen to which @engine currently rendering to.
- *
- * Returns: (nullable) (transfer none): a #GdkScreen, or %NULL.
- *
- * Deprecated: 3.14
- **/
-GdkScreen *
-gtk_theming_engine_get_screen (GtkThemingEngine *engine)
-{
- GtkThemingEnginePrivate *priv;
-
- g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), NULL);
-
- priv = engine->priv;
- return gtk_style_context_get_screen (priv->context);
-}
-
-/* Paint method implementations */
-static void
-gtk_theming_engine_render_check (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height)
-{
- gtk_render_check (engine->priv->context, cr, x, y, width, height);
-}
-
-static void
-gtk_theming_engine_render_option (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height)
-{
- gtk_render_option (engine->priv->context, cr, x, y, width, height);
-}
-
-static void
-gtk_theming_engine_render_arrow (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble angle,
- gdouble x,
- gdouble y,
- gdouble size)
-{
- gtk_render_arrow (engine->priv->context, cr, angle, x, y, size);
-}
-
-static void
-gtk_theming_engine_render_background (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height)
-{
- gtk_render_background (engine->priv->context, cr, x, y, width, height);
-}
-
-static void
-gtk_theming_engine_render_frame (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height)
-{
- gtk_render_frame (engine->priv->context, cr, x, y, width, height);
-}
-
-static void
-gtk_theming_engine_render_expander (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height)
-{
- gtk_render_expander (engine->priv->context, cr, x, y, width, height);
-}
-
-static void
-gtk_theming_engine_render_focus (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height)
-{
- gtk_render_focus (engine->priv->context, cr, x, y, width, height);
-}
-
-static void
-gtk_theming_engine_render_line (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x0,
- gdouble y0,
- gdouble x1,
- gdouble y1)
-{
- gtk_render_line (engine->priv->context, cr, x0, y0, x1, y1);
-}
-
-static void
-gtk_theming_engine_render_layout (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- PangoLayout *layout)
-{
- gtk_render_layout (engine->priv->context, cr, x, y, layout);
-}
-
-static void
-gtk_theming_engine_render_slider (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- GtkOrientation orientation)
-{
- gtk_render_slider (engine->priv->context, cr, x, y, width, height, orientation);
-}
-
-static void
-gtk_theming_engine_render_frame_gap (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- GtkPositionType gap_side,
- gdouble xy0_gap,
- gdouble xy1_gap)
-{
- gtk_render_frame_gap (engine->priv->context, cr, x, y, width, height, gap_side, xy0_gap, xy1_gap);
-}
-
-static void
-gtk_theming_engine_render_extension (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- GtkPositionType gap_side)
-{
- gtk_render_extension (engine->priv->context, cr, x, y, width, height, gap_side);
-}
-
-static void
-gtk_theming_engine_render_handle (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height)
-{
- gtk_render_handle (engine->priv->context, cr, x, y, width, height);
-}
-
-static void
-gtk_theming_engine_render_activity (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height)
-{
- gtk_render_activity (engine->priv->context, cr, x, y, width, height);
-}
-
-static GdkPixbuf *
-gtk_theming_engine_render_icon_pixbuf (GtkThemingEngine *engine,
- const GtkIconSource *source,
- GtkIconSize size)
-{
- return NULL;
-}
-
-static void
-gtk_theming_engine_render_icon (GtkThemingEngine *engine,
- cairo_t *cr,
- GdkPixbuf *pixbuf,
- gdouble x,
- gdouble y)
-{
- gtk_render_icon (engine->priv->context, cr, pixbuf, x, y);
-}
-
-static void
-gtk_theming_engine_render_icon_surface (GtkThemingEngine *engine,
- cairo_t *cr,
- cairo_surface_t *surface,
- gdouble x,
- gdouble y)
-{
- gtk_render_icon_surface (engine->priv->context, cr, surface, x, y);
-}
-
-G_GNUC_END_IGNORE_DEPRECATIONS
+++ /dev/null
-/* GTK - The GIMP Toolkit
- * Copyright (C) 2010 Carlos Garnacho <carlosg@gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __GTK_THEMING_ENGINE_H__
-#define __GTK_THEMING_ENGINE_H__
-
-#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
-#error "Only <gtk/gtk.h> can be included directly."
-#endif
-
-#include <glib-object.h>
-#include <cairo.h>
-
-#include <gtk/gtkborder.h>
-#include <gtk/gtkenums.h>
-#include <gtk/deprecated/gtkstyleproperties.h>
-#include <gtk/gtktypes.h>
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_THEMING_ENGINE (gtk_theming_engine_get_type ())
-#define GTK_THEMING_ENGINE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GTK_TYPE_THEMING_ENGINE, GtkThemingEngine))
-#define GTK_THEMING_ENGINE_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GTK_TYPE_THEMING_ENGINE, GtkThemingEngineClass))
-#define GTK_IS_THEMING_ENGINE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GTK_TYPE_THEMING_ENGINE))
-#define GTK_IS_THEMING_ENGINE_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GTK_TYPE_THEMING_ENGINE))
-#define GTK_THEMING_ENGINE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GTK_TYPE_THEMING_ENGINE, GtkThemingEngineClass))
-
-typedef struct _GtkThemingEngine GtkThemingEngine;
-typedef struct GtkThemingEnginePrivate GtkThemingEnginePrivate;
-typedef struct _GtkThemingEngineClass GtkThemingEngineClass;
-
-struct _GtkThemingEngine
-{
- GObject parent_object;
- GtkThemingEnginePrivate *priv;
-};
-
-/**
- * GtkThemingEngineClass:
- * @parent_class: The parent class.
- * @render_line: Renders a line between two points.
- * @render_background: Renders the background area of a widget region.
- * @render_frame: Renders the frame around a widget area.
- * @render_frame_gap: Renders the frame around a widget area with a gap in it.
- * @render_extension: Renders a extension to a box, usually a notebook tab.
- * @render_check: Renders a checkmark, as in #GtkCheckButton.
- * @render_option: Renders an option, as in #GtkRadioButton.
- * @render_arrow: Renders an arrow pointing to a certain direction.
- * @render_expander: Renders an element what will expose/expand part of
- * the UI, as in #GtkExpander.
- * @render_focus: Renders the focus indicator.
- * @render_layout: Renders a #PangoLayout
- * @render_slider: Renders a slider control, as in #GtkScale.
- * @render_handle: Renders a handle to drag UI elements, as in #GtkPaned.
- * @render_activity: Renders an area displaying activity, such as in #GtkSpinner,
- * or #GtkProgressBar.
- * @render_icon_pixbuf: Renders an icon as a #GdkPixbuf.
- * @render_icon: Renders an icon given as a #GdkPixbuf.
- * @render_icon_surface: Renders an icon given as a #cairo_surface_t.
- *
- * Base class for theming engines.
- */
-struct _GtkThemingEngineClass
-{
- GObjectClass parent_class;
-
- /*< public >*/
-
- void (* render_line) (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x0,
- gdouble y0,
- gdouble x1,
- gdouble y1);
- void (* render_background) (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height);
- void (* render_frame) (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height);
- void (* render_frame_gap) (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- GtkPositionType gap_side,
- gdouble xy0_gap,
- gdouble xy1_gap);
- void (* render_extension) (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- GtkPositionType gap_side);
- void (* render_check) (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height);
- void (* render_option) (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height);
- void (* render_arrow) (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble angle,
- gdouble x,
- gdouble y,
- gdouble size);
- void (* render_expander) (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height);
- void (* render_focus) (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height);
- void (* render_layout) (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- PangoLayout *layout);
- void (* render_slider) (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- GtkOrientation orientation);
- void (* render_handle) (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height);
- void (* render_activity) (GtkThemingEngine *engine,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height);
-
- GdkPixbuf * (* render_icon_pixbuf) (GtkThemingEngine *engine,
- const GtkIconSource *source,
- GtkIconSize size);
- void (* render_icon) (GtkThemingEngine *engine,
- cairo_t *cr,
- GdkPixbuf *pixbuf,
- gdouble x,
- gdouble y);
- void (* render_icon_surface) (GtkThemingEngine *engine,
- cairo_t *cr,
- cairo_surface_t *surface,
- gdouble x,
- gdouble y);
-
- /*< private >*/
- gpointer padding[14];
-};
-
-GDK_DEPRECATED_IN_3_14
-GType gtk_theming_engine_get_type (void) G_GNUC_CONST;
-
-/* function implemented in gtkcsscustomproperty.c */
-GDK_DEPRECATED_IN_3_8
-void gtk_theming_engine_register_property (const gchar *name_space,
- GtkStylePropertyParser parse_func,
- GParamSpec *pspec);
-
-GDK_DEPRECATED_IN_3_14
-void gtk_theming_engine_get_property (GtkThemingEngine *engine,
- const gchar *property,
- GtkStateFlags state,
- GValue *value);
-GDK_DEPRECATED_IN_3_14
-void gtk_theming_engine_get_valist (GtkThemingEngine *engine,
- GtkStateFlags state,
- va_list args);
-GDK_DEPRECATED_IN_3_14
-void gtk_theming_engine_get (GtkThemingEngine *engine,
- GtkStateFlags state,
- ...) G_GNUC_NULL_TERMINATED;
-
-GDK_DEPRECATED_IN_3_14
-void gtk_theming_engine_get_style_property (GtkThemingEngine *engine,
- const gchar *property_name,
- GValue *value);
-GDK_DEPRECATED_IN_3_14
-void gtk_theming_engine_get_style_valist (GtkThemingEngine *engine,
- va_list args);
-GDK_DEPRECATED_IN_3_14
-void gtk_theming_engine_get_style (GtkThemingEngine *engine,
- ...);
-
-GDK_DEPRECATED_IN_3_14
-gboolean gtk_theming_engine_lookup_color (GtkThemingEngine *engine,
- const gchar *color_name,
- GdkRGBA *color);
-
-GDK_DEPRECATED_IN_3_14
-const GtkWidgetPath * gtk_theming_engine_get_path (GtkThemingEngine *engine);
-
-GDK_DEPRECATED_IN_3_14
-gboolean gtk_theming_engine_has_class (GtkThemingEngine *engine,
- const gchar *style_class);
-GDK_DEPRECATED_IN_3_14
-gboolean gtk_theming_engine_has_region (GtkThemingEngine *engine,
- const gchar *style_region,
- GtkRegionFlags *flags);
-
-GDK_DEPRECATED_IN_3_14
-GtkStateFlags gtk_theming_engine_get_state (GtkThemingEngine *engine);
-GDK_DEPRECATED_IN_3_6
-gboolean gtk_theming_engine_state_is_running (GtkThemingEngine *engine,
- GtkStateType state,
- gdouble *progress);
-
-GDK_DEPRECATED_IN_3_8_FOR(gtk_theming_engine_get_state)
-GtkTextDirection gtk_theming_engine_get_direction (GtkThemingEngine *engine);
-
-GDK_DEPRECATED_IN_3_14
-GtkJunctionSides gtk_theming_engine_get_junction_sides (GtkThemingEngine *engine);
-
-/* Helper functions */
-GDK_DEPRECATED_IN_3_14
-void gtk_theming_engine_get_color (GtkThemingEngine *engine,
- GtkStateFlags state,
- GdkRGBA *color);
-GDK_DEPRECATED_IN_3_14
-void gtk_theming_engine_get_background_color (GtkThemingEngine *engine,
- GtkStateFlags state,
- GdkRGBA *color);
-GDK_DEPRECATED_IN_3_14
-void gtk_theming_engine_get_border_color (GtkThemingEngine *engine,
- GtkStateFlags state,
- GdkRGBA *color);
-
-GDK_DEPRECATED_IN_3_14
-void gtk_theming_engine_get_border (GtkThemingEngine *engine,
- GtkStateFlags state,
- GtkBorder *border);
-GDK_DEPRECATED_IN_3_14
-void gtk_theming_engine_get_padding (GtkThemingEngine *engine,
- GtkStateFlags state,
- GtkBorder *padding);
-GDK_DEPRECATED_IN_3_14
-void gtk_theming_engine_get_margin (GtkThemingEngine *engine,
- GtkStateFlags state,
- GtkBorder *margin);
-
-GDK_DEPRECATED_IN_3_8_FOR(gtk_theming_engine_get)
-const PangoFontDescription * gtk_theming_engine_get_font (GtkThemingEngine *engine,
- GtkStateFlags state);
-
-GDK_DEPRECATED_IN_3_14
-GtkThemingEngine * gtk_theming_engine_load (const gchar *name);
-
-GDK_DEPRECATED_IN_3_14
-GdkScreen * gtk_theming_engine_get_screen (GtkThemingEngine *engine);
-
-G_END_DECLS
-
-#endif /* __GTK_THEMING_ENGINE_H__ */